// Clase que define un objeto compuesto por varios

#ifndef COMPLEXOBJECT_H_
#define COMPLEXOBJECT_H_

#include "BaseObject.h"
#include <list>

class Renderer;

class ComplexObject : public BaseObject
{
public:
	typedef std::list<BaseObject*> ComplexObjectList;
	typedef std::list<BaseObject*>::iterator ComplexObjectListIter;

protected:
	// Lista de objectos
	ComplexObjectList mObjects;

public:
	ComplexObject(VisibleFace vf, GraphicalFace gf,ShadingModel sm);
	virtual ~ComplexObject();

	void AddChild(BaseObject * obj);
	void RemoveChild(BaseObject * obj);

	ComplexObjectList * GetChildList(){ return &mObjects; }

	virtual void VUpdate(float delta);
	virtual void VRender(Renderer * render);

};

#endif // COMPLEXOBJECT_H_